home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v09i016: NetHack3 - display oriented dungeons & dragons (Ver. 3.0), Patch7p
- Message-ID: <5230@tekred.CNA.TEK.COM>
- Date: 24 Feb 90 00:59:17 GMT
- Sender: news@tekred.CNA.TEK.COM
- Lines: 2277
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
- Posting-number: Volume 9, Issue 16
- Archive-name: NetHack3/Patch7p
- Patch-To: NetHack3: Volume 7, Issue 56-93
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 16 (of 30)."
- # Contents: patch7.21
- # Wrapped by billr@saab on Wed Feb 21 10:04:37 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'patch7.21' -a "${1}" != "-c" ; then
- echo shar: Renaming existing file \"'patch7.21'\" to \"'patch7.21.orig'\"
- mv -f 'patch7.21' 'patch7.21.orig'
- fi
- echo shar: Extracting \"'patch7.21'\" \(53640 characters\)
- sed "s/^X//" >'patch7.21' <<'END_OF_FILE'
- X*** src/Old/timeout.c Mon Feb 19 19:02:27 1990
- X--- src/timeout.c Thu Jan 25 22:14:40 1990
- X***************
- X*** 1,9 ****
- X! /* SCCS Id: @(#)timeout.c 3.0 87/07/06
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X #include "hack.h"
- X
- X /* He is being petrified - dialogue by inmet!tower */
- X static const char *stoned_texts[] = {
- X "You are slowing down.", /* 5 */
- X--- 1,16 ----
- X! /* SCCS Id: @(#)timeout.c 3.0 89/11/20
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X #include "hack.h"
- X
- X+ #ifdef OVERLAY
- X+ extern void NDECL(stoned_dialog), NDECL(vomiting_dialog), NDECL(choke_dialog);
- X+ extern void FDECL(hatch_it, (struct obj*));
- X+ #endif
- X+
- X+ #ifdef OVLB
- X+
- X /* He is being petrified - dialogue by inmet!tower */
- X static const char *stoned_texts[] = {
- X "You are slowing down.", /* 5 */
- X***************
- X*** 13,19 ****
- X "You are a statue." /* 1 */
- X };
- X
- X! static void
- X stoned_dialogue() {
- X register long i = (Stoned & TIMEOUT);
- X
- X--- 20,26 ----
- X "You are a statue." /* 1 */
- X };
- X
- X! XSTATIC void
- X stoned_dialogue() {
- X register long i = (Stoned & TIMEOUT);
- X
- X***************
- X*** 34,40 ****
- X "You suddenly vomit!" /* 0 */
- X };
- X
- X! static void
- X vomiting_dialogue() {
- X register long i = (Vomiting & TIMEOUT) / 3L;
- X
- X--- 41,47 ----
- X "You suddenly vomit!" /* 0 */
- X };
- X
- X! XSTATIC void
- X vomiting_dialogue() {
- X register long i = (Vomiting & TIMEOUT) / 3L;
- X
- X***************
- X*** 42,48 ****
- X i >= 0 && i < SIZE(vomiting_texts))
- X pline(vomiting_texts[SIZE(vomiting_texts) - i]);
- X
- X! switch(i) {
- X
- X case 0: vomit(); morehungry(20); break;
- X case 2: make_confused(HConfusion + d(2,4), FALSE);
- X--- 49,55 ----
- X i >= 0 && i < SIZE(vomiting_texts))
- X pline(vomiting_texts[SIZE(vomiting_texts) - i]);
- X
- X! switch((int)i) {
- X
- X case 0: vomit(); morehungry(20); break;
- X case 2: make_confused(HConfusion + d(2,4), FALSE);
- X***************
- X*** 59,65 ****
- X "You suffocate."
- X };
- X
- X! static void
- X choke_dialogue()
- X {
- X register long i = (Strangled & TIMEOUT);
- X--- 66,72 ----
- X "You suffocate."
- X };
- X
- X! XSTATIC void
- X choke_dialogue()
- X {
- X register long i = (Strangled & TIMEOUT);
- X***************
- X*** 69,74 ****
- X--- 76,84 ----
- X hcolor() : blue);
- X }
- X
- X+ #endif /* OVLB */
- X+ #ifdef OVL0
- X+
- X void
- X timeout()
- X {
- X***************
- X*** 105,112 ****
- X if(upp->p_tofn) (*upp->p_tofn)();
- X else switch(upp - u.uprops){
- X case STONED:
- X! if (!killer) killer = "cockatrice";
- X! done(STONING);
- X break;
- X case VOMITING:
- X make_vomiting(0L, TRUE);
- X--- 115,124 ----
- X if(upp->p_tofn) (*upp->p_tofn)();
- X else switch(upp - u.uprops){
- X case STONED:
- X! if (!killer) {
- X! killer_format = KILLED_BY_AN;
- X! killer = "cockatrice";
- X! } done(STONING);
- X break;
- X case VOMITING:
- X make_vomiting(0L, TRUE);
- X***************
- X*** 113,118 ****
- X--- 125,131 ----
- X break;
- X case SICK:
- X You("die from your illness.");
- X+ killer_format = KILLED_BY_AN;
- X killer = u.usick_cause;
- X done(POISONING);
- X break;
- X***************
- X*** 155,160 ****
- X--- 168,174 ----
- X }
- X break;
- X case STRANGLED:
- X+ killer_format = KILLED_BY;
- X killer = "strangulation";
- X done(DIED);
- X break;
- X***************
- X*** 191,199 ****
- X }
- X }
- X
- X! static const char slithy[] = { S_SNAKE, S_NAGA, S_WORM, 0 };
- X
- X! static void
- X hatch_it(otmp) /* hatch the egg "otmp" if possible */
- X register struct obj *otmp;
- X {
- X--- 205,214 ----
- X }
- X }
- X
- X! #endif /* OVL0 */
- X! #ifdef OVLB
- X
- X! XSTATIC void
- X hatch_it(otmp) /* hatch the egg "otmp" if possible */
- X register struct obj *otmp;
- X {
- X***************
- X*** 215,227 ****
- X
- X if(Blind)
- X You("feel something %s from your pack!",
- X! (index(slithy, mtmp->data->mlet)) ?
- X! "slither" : "drop");
- X else
- X! pline("%s just %s out of your pack!",
- X! An(mtmp->data->mname),
- X! (index(slithy, mtmp->data->mlet)) ?
- X! "slithered" : "dropped");
- X
- X #ifdef POLYSELF
- X if (yours) {
- X--- 230,240 ----
- X
- X if(Blind)
- X You("feel something %s from your pack!",
- X! locomotion(mtmp->data, "drop"));
- X else
- X! You("see %s %s out of your pack!",
- X! an(mtmp->data->mname),
- X! locomotion(mtmp->data, "drop"));
- X
- X #ifdef POLYSELF
- X if (yours) {
- X***************
- X*** 240,245 ****
- X--- 253,261 ----
- X }
- X }
- X
- X+ #endif /* OVLB */
- X+ #ifdef OVL1
- X+
- X void
- X hatch_eggs() /* hatch any eggs that have been too long in pack */
- X {
- X***************
- X*** 264,266 ****
- X--- 280,284 ----
- X }
- X */
- X }
- X+
- X+ #endif /* OVL1 */
- X*** src/Old/topl.c Mon Feb 19 19:02:45 1990
- X--- src/topl.c Mon Feb 19 10:18:54 1990
- X***************
- X*** 2,21 ****
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X! #define NEED_VARARGS
- X #include "hack.h"
- X
- X! char toplines[BUFSIZ];
- X xchar tlx, tly; /* set by pline; used by addtopl */
- X! static boolean no_repeat = FALSE;
- X
- X! struct topl {
- X struct topl *next_topl;
- X char *topl_text;
- X } *old_toplines, *last_redone_topl;
- X #define OTLMAX 20 /* max nr of old toplines remembered */
- X
- X! static void
- X redotoplin() {
- X home();
- X if(index(toplines, '\n')) cl_end();
- X--- 2,35 ----
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X! #define NEED_VARARGS /* Uses ... */ /* comment line for pre-compiled headers */
- X #include "hack.h"
- X
- X! VSTATIC char toplines[BUFSIZ];
- X!
- X! #ifndef OVLB
- X! OSTATIC boolean no_repeat;
- X! #else /* OVLB */
- X! XSTATIC boolean no_repeat = FALSE;
- X! #endif /* OVLB */
- X!
- X! extern xchar tlx, tly;
- X! #ifdef OVLB
- X xchar tlx, tly; /* set by pline; used by addtopl */
- X! #endif /* OVLB */
- X
- X! OSTATIC void NDECL(redotoplin);
- X! OSTATIC void FDECL(xmore,(const char *));
- X! VSTATIC struct topl {
- X struct topl *next_topl;
- X char *topl_text;
- X } *old_toplines, *last_redone_topl;
- X+
- X #define OTLMAX 20 /* max nr of old toplines remembered */
- X
- X! #ifdef OVL1
- X!
- X! XSTATIC void
- X redotoplin() {
- X home();
- X if(index(toplines, '\n')) cl_end();
- X***************
- X*** 35,40 ****
- X--- 49,57 ----
- X more();
- X }
- X
- X+ #endif /* OVL1 */
- X+ #ifdef OVLB
- X+
- X int
- X doredotopl(){
- X if(last_redone_topl)
- X***************
- X*** 48,53 ****
- X--- 65,73 ----
- X return 0;
- X }
- X
- X+ #endif /* OVLB */
- X+ #ifdef OVL1
- X+
- X void
- X remember_topl() {
- X register struct topl *tl;
- X***************
- X*** 74,80 ****
- X }
- X
- X void
- X! addtopl(s) char *s; {
- X curs(tlx,tly);
- X if(tlx + strlen(s) > CO) putsym('\n');
- X putstr(s);
- X--- 94,102 ----
- X }
- X
- X void
- X! addtopl(s)
- X! const char *s;
- X! {
- X curs(tlx,tly);
- X if(tlx + strlen(s) > CO) putsym('\n');
- X putstr(s);
- X***************
- X*** 83,91 ****
- X flags.toplin = 1;
- X }
- X
- X! static void
- X xmore(s)
- X! char *s; /* allowed chars besides space/return */
- X {
- X if(flags.toplin) {
- X curs(tlx, tly);
- X--- 105,116 ----
- X flags.toplin = 1;
- X }
- X
- X! #endif /* OVL1 */
- X! #ifdef OVL2
- X!
- X! XSTATIC void
- X xmore(s)
- X! const char *s; /* allowed chars besides space/return */
- X {
- X if(flags.toplin) {
- X curs(tlx, tly);
- X***************
- X*** 104,109 ****
- X--- 129,135 ----
- X cl_end();
- X docorner(1, tly-1);
- X tlx = tly = 1;
- X+ curs(tlx, tly);
- X }
- X flags.toplin = 0;
- X }
- X***************
- X*** 113,125 ****
- X xmore("");
- X }
- X
- X void
- X cmore(s)
- X! register char *s;
- X {
- X xmore(s);
- X }
- X
- X void
- X clrlin(){
- X if(flags.toplin) {
- X--- 139,157 ----
- X xmore("");
- X }
- X
- X+ #endif /* OVL2 */
- X+ #ifdef OVLB
- X+
- X void
- X cmore(s)
- X! register const char *s;
- X {
- X xmore(s);
- X }
- X
- X+ #endif /* OVLB */
- X+ #ifdef OVL1
- X+
- X void
- X clrlin(){
- X if(flags.toplin) {
- X***************
- X*** 134,143 ****
- X flags.toplin = 0;
- X }
- X
- X! /*VARARGS1*/
- X! /* Note the modified mstatusline has 9 arguments KAA */
- X
- X! /* Also note that these declarations rely on knowledge of the internals
- X * of the variable argument handling stuff in "tradstdc.h"
- X */
- X
- X--- 166,176 ----
- X flags.toplin = 0;
- X }
- X
- X! #endif /* OVL1 */
- X! #ifdef OVLB
- X
- X! /*VARARGS1*/
- X! /* Note that these declarations rely on knowledge of the internals
- X * of the variable argument handling stuff in "tradstdc.h"
- X */
- X
- X***************
- X*** 272,284 ****
- X /*ARGSUSED*/
- X /*VARARGS2*/
- X void
- X! kludge VA_DECL2(char *, str, char *, arg)
- X #ifdef VA_NEXT
- X char *other1, *other2, *other3;
- X #endif
- X VA_START(arg);
- X! VA_INIT(str, char *);
- X! VA_INIT(arg, char *);
- X #ifdef VA_NEXT
- X VA_NEXT(other1, char *);
- X VA_NEXT(other2, char *);
- X--- 305,317 ----
- X /*ARGSUSED*/
- X /*VARARGS2*/
- X void
- X! kludge VA_DECL2(const char *, str, const char *, arg)
- X #ifdef VA_NEXT
- X char *other1, *other2, *other3;
- X #endif
- X VA_START(arg);
- X! VA_INIT(str, const char *);
- X! VA_INIT(arg, const char *);
- X #ifdef VA_NEXT
- X VA_NEXT(other1, char *);
- X VA_NEXT(other2, char *);
- X***************
- X*** 294,299 ****
- X--- 327,335 ----
- X VA_END();
- X }
- X
- X+ #endif /* OVLB */
- X+ #ifdef OVL0
- X+
- X void
- X putsym(c)
- X char c;
- X***************
- X*** 325,330 ****
- X--- 361,369 ----
- X while(*s) putsym(*s++);
- X }
- X
- X+ #endif /* OVL0 */
- X+ #ifdef OVL2
- X+
- X char
- X yn_function(resp, def)
- X const char *resp;
- X***************
- X*** 356,367 ****
- X return q;
- X }
- X
- X /*VARARGS1*/
- X void
- X! impossible VA_DECL(char *, s)
- X VA_START(s);
- X! VA_INIT(s, char *);
- X vpline(s,VA_ARGS);
- X pline("Program in disorder - perhaps you'd better Quit.");
- X VA_END();
- X }
- X--- 395,411 ----
- X return q;
- X }
- X
- X+ #endif /* OVL2 */
- X+ #ifdef OVLB
- X+
- X /*VARARGS1*/
- X void
- X! impossible VA_DECL(const char *, s)
- X VA_START(s);
- X! VA_INIT(s, const char *);
- X vpline(s,VA_ARGS);
- X pline("Program in disorder - perhaps you'd better Quit.");
- X VA_END();
- X }
- X+
- X+ #endif /* OVLB */
- X*** src/Old/trap.c Mon Feb 19 19:03:58 1990
- X--- src/trap.c Mon Feb 19 10:17:41 1990
- X***************
- X*** 1,14 ****
- X! /* SCCS Id: @(#)trap.c 3.0 89/11/10
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X #include "hack.h"
- X #include "edog.h"
- X- #include "trapname.h"
- X
- X! void domagictrap();
- X! static boolean thitm();
- X
- X /* Generic rust-armor function. Returns TRUE if a message was printed;
- X * "print", if set, means to print a message (and thus to return TRUE) even
- X * if the item could not be rusted; otherwise a message is printed and TRUE is
- X--- 1,45 ----
- X! /* SCCS Id: @(#)trap.c 3.0 89/11/20
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X #include "hack.h"
- X #include "edog.h"
- X
- X! #ifdef OVLB
- X
- X+ const char *traps[] = {
- X+ "",
- X+ " monster trap",
- X+ " statue trap",
- X+ " bear trap",
- X+ "n arrow trap",
- X+ " dart trap",
- X+ " trapdoor",
- X+ " teleportation trap",
- X+ " pit",
- X+ " sleeping gas trap"
- X+ ," magic trap"
- X+ ," squeaky board"
- X+ ," web"
- X+ ," spiked pit"
- X+ ," level teleporter"
- X+ #ifdef SPELLS
- X+ ,"n anti-magic field"
- X+ #endif
- X+ ," rust trap"
- X+ #ifdef POLYSELF
- X+ ," polymorph trap"
- X+ #endif
- X+ ," land mine"
- X+ };
- X+
- X+ #endif /* OVLB */
- X+
- X+ void NDECL(domagictrap);
- X+ OSTATIC boolean FDECL(thitm, (int, struct monst *, struct obj *, int));
- X+
- X+ #ifdef OVLB
- X+
- X /* Generic rust-armor function. Returns TRUE if a message was printed;
- X * "print", if set, means to print a message (and thus to return TRUE) even
- X * if the item could not be rusted; otherwise a message is printed and TRUE is
- X***************
- X*** 17,28 ****
- X boolean
- X rust_dmg(otmp, ostr, type, print)
- X register struct obj *otmp;
- X! register char *ostr;
- X int type;
- X boolean print;
- X {
- X static const char *gook[] = { "slag", "rust", "rot", "corrosion" };
- X static const char *action[] = { "smolder", "rust", "rot", "corrode" };
- X boolean vulnerable = FALSE;
- X boolean plural;
- X
- X--- 48,60 ----
- X boolean
- X rust_dmg(otmp, ostr, type, print)
- X register struct obj *otmp;
- X! register const char *ostr;
- X int type;
- X boolean print;
- X {
- X static const char *gook[] = { "slag", "rust", "rot", "corrosion" };
- X static const char *action[] = { "smolder", "rust", "rot", "corrode" };
- X+ static const char *msg[] = { "burnt", "rusted", "rotten", "corroded" };
- X boolean vulnerable = FALSE;
- X boolean plural;
- X
- X***************
- X*** 54,60 ****
- X otmp->spe--;
- X adj_abon(otmp, -1);
- X }
- X! } else Your("%s look%s quite rusted.", ostr, plural ? "" : "s");
- X return(TRUE);
- X }
- X
- X--- 86,93 ----
- X otmp->spe--;
- X adj_abon(otmp, -1);
- X }
- X! } else Your("%s %s%s quite %s.", ostr, Blind ? "feel" : "look",
- X! plural ? "" : "s", msg[type]);
- X return(TRUE);
- X }
- X
- X***************
- X*** 65,70 ****
- X--- 98,112 ----
- X register struct trap *ttmp;
- X register struct permonst *ptr;
- X
- X+ if (ttmp = t_at(x,y)) {
- X+ if (u.utrap &&
- X+ ((u.utraptype == TT_BEARTRAP && typ != BEAR_TRAP) ||
- X+ (u.utraptype == TT_WEB && typ != WEB) ||
- X+ (u.utraptype == TT_PIT && typ != PIT && typ != SPIKED_PIT)))
- X+ u.utrap = 0;
- X+ ttmp->ttyp = typ;
- X+ return ttmp;
- X+ }
- X ttmp = newtrap();
- X ttmp->ttyp = typ;
- X ttmp->tx = x;
- X***************
- X*** 71,81 ****
- X ttmp->ty = y;
- X switch(typ) {
- X case MONST_TRAP: /* create a monster in "hiding" */
- X if(rn2(5) && (ptr = mkclass(S_PIERCER)))
- X ttmp->pm = monsndx(ptr);
- X! else
- X ttmp->pm = rndmonnum();
- X break;
- X case STATUE_TRAP: /* create a "living" statue */
- X ttmp->pm = rndmonnum();
- X (void) mkcorpstat(STATUE, &mons[ttmp->pm], x, y);
- X--- 113,131 ----
- X ttmp->ty = y;
- X switch(typ) {
- X case MONST_TRAP: /* create a monster in "hiding" */
- X+ { int tryct = 0;
- X if(rn2(5) && (ptr = mkclass(S_PIERCER)))
- X ttmp->pm = monsndx(ptr);
- X! else do {
- X ttmp->pm = rndmonnum();
- X+ } while ((noattacks(&mons[ttmp->pm]) ||
- X+ !mons[ttmp->pm].mmove) && ++tryct < 100);
- X+ if (tryct == 100) {
- X+ free((genericptr_t)ttmp);
- X+ return(struct trap *)0;
- X+ }
- X break;
- X+ }
- X case STATUE_TRAP: /* create a "living" statue */
- X ttmp->pm = rndmonnum();
- X (void) mkcorpstat(STATUE, &mons[ttmp->pm], x, y);
- X***************
- X*** 111,119 ****
- X #ifdef POLYSELF
- X || is_flyer(uasmon)
- X #endif
- X! )) &&
- X! !(IS_DOOR(levl[x][y].typ) &&
- X! (levl[x][y].doormask & (D_LOCKED | D_CLOSED)));
- X return(tmp1 && tmp2 && tmp3);
- X #else
- X return( isok(x,y) &&
- X--- 161,167 ----
- X #ifdef POLYSELF
- X || is_flyer(uasmon)
- X #endif
- X! )) && !closed_door(x,y);
- X return(tmp1 && tmp2 && tmp3);
- X #else
- X return( isok(x,y) &&
- X***************
- X*** 129,138 ****
- X #ifdef POLYSELF
- X || is_flyer(uasmon)
- X #endif
- X! )) &&
- X! !(IS_DOOR(levl[x][y].typ) &&
- X! (levl[x][y].doormask & (D_LOCKED | D_CLOSED)))
- X! );
- X #endif
- X /* Note: gold is permitted (because of vaults) */
- X }
- X--- 177,183 ----
- X #ifdef POLYSELF
- X || is_flyer(uasmon)
- X #endif
- X! )) && !closed_door(x,y));
- X #endif
- X /* Note: gold is permitted (because of vaults) */
- X }
- X***************
- X*** 189,199 ****
- X case BEAR_TRAP:
- X if(Levitation
- X #ifdef POLYSELF
- X! || is_flyer(uasmon)
- X! #endif
- X! ) {
- X You("%s over a bear trap.",
- X Levitation ? "float" : "fly");
- X break;
- X }
- X #ifdef POLYSELF
- X--- 234,246 ----
- X case BEAR_TRAP:
- X if(Levitation
- X #ifdef POLYSELF
- X! || is_flyer(uasmon)) {
- X You("%s over a bear trap.",
- X Levitation ? "float" : "fly");
- X+ #else
- X+ ) {
- X+ You("float over a bear trap.");
- X+ #endif
- X break;
- X }
- X #ifdef POLYSELF
- X***************
- X*** 253,266 ****
- X case TRAPDOOR:
- X if(is_maze_lev
- X #ifdef STRONGHOLD
- X! && (dlevel > stronghold_level)
- X! #endif /* STRONGHOLD /**/
- X ) {
- X pline("A trap door in the ceiling opens and a rock falls on your %s!",
- X body_part(HEAD));
- X if(uarmh)
- X pline("Fortunately, you are wearing a helmet!");
- X! losehp(uarmh ? 2 : d(2,10),"falling rock");
- X (void) mksobj_at(ROCK, u.ux, u.uy);
- X fobj->quan = 1;
- X fobj->owt = weight(fobj);
- X--- 300,313 ----
- X case TRAPDOOR:
- X if(is_maze_lev
- X #ifdef STRONGHOLD
- X! && (dlevel > stronghold_level)
- X! #endif
- X ) {
- X pline("A trap door in the ceiling opens and a rock falls on your %s!",
- X body_part(HEAD));
- X if(uarmh)
- X pline("Fortunately, you are wearing a helmet!");
- X! losehp(uarmh ? 2 : d(2,10),"falling rock", KILLED_BY_AN);
- X (void) mksobj_at(ROCK, u.ux, u.uy);
- X fobj->quan = 1;
- X fobj->owt = weight(fobj);
- X***************
- X*** 276,285 ****
- X pline("A trap door opens up under you!");
- X if(Levitation || u.ustuck || dlevel == MAXLEVEL
- X #ifdef POLYSELF
- X! || is_flyer(uasmon)
- X #endif
- X #ifdef ENDGAME
- X! || dlevel == ENDLEVEL
- X #endif
- X ) {
- X You("don't fall in.");
- X--- 323,332 ----
- X pline("A trap door opens up under you!");
- X if(Levitation || u.ustuck || dlevel == MAXLEVEL
- X #ifdef POLYSELF
- X! || is_flyer(uasmon) || u.umonnum == PM_WUMPUS
- X #endif
- X #ifdef ENDGAME
- X! || dlevel == ENDLEVEL
- X #endif
- X ) {
- X You("don't fall in.");
- X***************
- X*** 290,295 ****
- X--- 337,343 ----
- X You("are jerked back by your pet!");
- X else {
- X #endif
- X+ if(in_shop(u.ux, u.uy)) shopdig(1);
- X unsee();
- X (void) fflush(stdout);
- X goto_level(newlevel, FALSE, TRUE);
- X***************
- X*** 301,307 ****
- X case DART_TRAP:
- X pline("A little dart shoots out at you!");
- X if(thitu(7,rnd(3),(struct obj *)0,"little dart")) {
- X! if(!rn2(6)) poisoned("dart",A_CON,"poison dart");
- X } else {
- X (void) mksobj_at(DART, u.ux, u.uy);
- X fobj->quan = 1;
- X--- 349,355 ----
- X case DART_TRAP:
- X pline("A little dart shoots out at you!");
- X if(thitu(7,rnd(3),(struct obj *)0,"little dart")) {
- X! if(!rn2(6)) poisoned("dart",A_CON,"poison dart",10);
- X } else {
- X (void) mksobj_at(DART, u.ux, u.uy);
- X fobj->quan = 1;
- X***************
- X*** 343,349 ****
- X break;
- X case RUST_TRAP:
- X #ifdef POLYSELF
- X! #ifdef GOLEMS
- X if (u.umonnum == PM_IRON_GOLEM) {
- X pline("A gush of water hits you!");
- X You("are covered with rust!");
- X--- 391,397 ----
- X break;
- X case RUST_TRAP:
- X #ifdef POLYSELF
- X! # ifdef GOLEMS
- X if (u.umonnum == PM_IRON_GOLEM) {
- X pline("A gush of water hits you!");
- X You("are covered with rust!");
- X***************
- X*** 350,356 ****
- X rehumanize();
- X break;
- X } else
- X! #endif /* GOLEMS */
- X if (u.umonnum == PM_GREMLIN && rn2(3)) {
- X pline("A gush of water hits you!");
- X if(mtmp = cloneu()) {
- X--- 398,404 ----
- X rehumanize();
- X break;
- X } else
- X! # endif /* GOLEMS */
- X if (u.umonnum == PM_GREMLIN && rn2(3)) {
- X pline("A gush of water hits you!");
- X if(mtmp = cloneu()) {
- X***************
- X*** 415,421 ****
- X #endif
- X u.utrap = rn1(6,2);
- X u.utraptype = TT_PIT;
- X! losehp(rnd(6),"fall into a pit");
- X selftouch("Falling, you");
- X break;
- X case SPIKED_PIT:
- X--- 463,469 ----
- X #endif
- X u.utrap = rn1(6,2);
- X u.utraptype = TT_PIT;
- X! losehp(rnd(6),"fell into a pit", NO_KILLER_PREFIX);
- X selftouch("Falling, you");
- X break;
- X case SPIKED_PIT:
- X***************
- X*** 435,453 ****
- X #endif
- X u.utrap = rn1(6,2);
- X u.utraptype = TT_PIT;
- X! losehp(rnd(10),"fall onto iron spikes");
- X! if(!rn2(6)) poisoned("spikes",A_STR,"poison spikes");
- X selftouch("Falling, you");
- X break;
- X case LEVEL_TELEP:
- X! { int oldl = dlevel;
- X
- X! pline("You have %s onto a level teleport trap!",
- X #ifdef POLYSELF
- X! is_flyer(uasmon) ? "flown" :
- X! (Levitation || nolimbs(uasmon)) ? "moved" : "stepped");
- X #else
- X! Levitation ? "moved" : "stepped");
- X #endif
- X if(Antimagic) {
- X pru();
- X--- 483,503 ----
- X #endif
- X u.utrap = rn1(6,2);
- X u.utraptype = TT_PIT;
- X! losehp(rnd(10),"fell into a pit of iron spikes",
- X! NO_KILLER_PREFIX);
- X! if(!rn2(6)) poisoned("spikes",A_STR,"fall onto poison spikes",8);
- X selftouch("Falling, you");
- X break;
- X case LEVEL_TELEP:
- X!
- X! { int oldl = dlevel;
- X
- X! You("%s onto a level teleport trap!",
- X! Levitation ? "float" :
- X #ifdef POLYSELF
- X! locomotion(uasmon, "step"));
- X #else
- X! "step");
- X #endif
- X if(Antimagic) {
- X pru();
- X***************
- X*** 502,508 ****
- X case MGTRP: /* A magic trap. */
- X if (!rn2(30)) {
- X You("are caught in a magical explosion!");
- X! losehp(rnd(10), "magical explosion");
- X #ifdef SPELLS
- X Your("body absorbs some of the magical energy!");
- X u.uen = (u.uenmax += 2);
- X--- 552,558 ----
- X case MGTRP: /* A magic trap. */
- X if (!rn2(30)) {
- X You("are caught in a magical explosion!");
- X! losehp(rnd(10), "magical explosion", KILLED_BY_AN);
- X #ifdef SPELLS
- X Your("body absorbs some of the magical energy!");
- X u.uen = (u.uenmax += 2);
- X***************
- X*** 515,521 ****
- X ) newsym(u.ux,u.uy);
- X } else domagictrap();
- X break;
- X! case SQBRD: /* Stepped on a squeaky board. */
- X if (Levitation
- X #ifdef POLYSELF
- X || is_flyer(uasmon)
- X--- 565,571 ----
- X ) newsym(u.ux,u.uy);
- X } else domagictrap();
- X break;
- X! case SQBRD: /* stepped on a squeaky board */
- X if (Levitation
- X #ifdef POLYSELF
- X || is_flyer(uasmon)
- X***************
- X*** 524,541 ****
- X if (Hallucination) You("notice a crease in the linoleum.");
- X else You("notice a loose board below you.");
- X } else {
- X! pline("A board underfoot gives off a loud squeak!");
- X wake_nearby();
- X }
- X break;
- X case WEB: /* Our luckless player has stumbled into a web. */
- X
- X! pline("You've %s into a spider web!",
- X! Levitation ? "floated" :
- X #ifdef POLYSELF
- X! is_flyer(uasmon) ? "flown" :
- X #endif
- X- "stumbled");
- X u.utraptype = TT_WEB;
- X
- X /* Time stuck in the web depends on your strength. */
- X--- 574,592 ----
- X if (Hallucination) You("notice a crease in the linoleum.");
- X else You("notice a loose board below you.");
- X } else {
- X! pline("A board beneath you squeaks loudly.");
- X wake_nearby();
- X }
- X break;
- X case WEB: /* Our luckless player has stumbled into a web. */
- X
- X! You("%s into a spider web!",
- X! Levitation ? "float" :
- X #ifdef POLYSELF
- X! locomotion(uasmon, "stumble"));
- X! #else
- X! "stumble");
- X #endif
- X u.utraptype = TT_WEB;
- X
- X /* Time stuck in the web depends on your strength. */
- X***************
- X*** 556,584 ****
- X break;
- X
- X case LANDMINE: {
- X! # ifndef LINT
- X register struct monst *mtmp = fmon;
- X! # endif /* LINT */
- X
- X if (Levitation
- X #ifdef POLYSELF
- X! || is_flyer(uasmon)
- X #endif
- X ) {
- X! You("see a trigger in a pile of soil below you!");
- X if (rn2(3)) break;
- X pline("KAABLAMM!!! The air currents set it off!");
- X } else {
- X! #ifdef POLYSELF
- X! pline("KAABLAMM!!! You %s a land mine!",
- X! nolimbs(uasmon) ? "encountered" : "stepped on");
- X! #else
- X! pline("KAABLAMM!!! You stepped on a land mine!");
- X! #endif
- X set_wounded_legs(LEFT_SIDE, 40 + rnd(35));
- X set_wounded_legs(RIGHT_SIDE, 40 + rnd(35));
- X }
- X! losehp(rnd(16), "land mine");
- X /* wake everything on the level */
- X while(mtmp) {
- X if(mtmp->msleep) mtmp->msleep = 0;
- X--- 607,630 ----
- X break;
- X
- X case LANDMINE: {
- X! #ifndef LINT
- X register struct monst *mtmp = fmon;
- X! #endif
- X
- X if (Levitation
- X #ifdef POLYSELF
- X! || is_flyer(uasmon)
- X #endif
- X ) {
- X! You("see a trigger in a pile of soil below you.");
- X if (rn2(3)) break;
- X pline("KAABLAMM!!! The air currents set it off!");
- X } else {
- X! pline("KAABLAMM!!! You triggered a land mine!");
- X set_wounded_legs(LEFT_SIDE, 40 + rnd(35));
- X set_wounded_legs(RIGHT_SIDE, 40 + rnd(35));
- X }
- X! losehp(rnd(16), "land mine", KILLED_BY_AN);
- X /* wake everything on the level */
- X while(mtmp) {
- X if(mtmp->msleep) mtmp->msleep = 0;
- X***************
- X*** 594,601 ****
- X }
- X }
- X
- X #ifdef WALKIES
- X! static boolean
- X teleport_pet(mtmp)
- X register struct monst *mtmp;
- X {
- X--- 640,654 ----
- X }
- X }
- X
- X+ #endif /* OVLB */
- X+
- X #ifdef WALKIES
- X!
- X! OSTATIC boolean FDECL(teleport_pet, (struct monst *));
- X!
- X! #ifdef OVLB
- X!
- X! XSTATIC boolean
- X teleport_pet(mtmp)
- X register struct monst *mtmp;
- X {
- X***************
- X*** 618,625 ****
- X--- 671,698 ----
- X }
- X return TRUE;
- X }
- X+
- X+ #endif /* OVLB */
- X+
- X #endif
- X
- X+ #ifdef OVLB
- X+
- X+ XSTATIC void
- X+ seetrap(trap)
- X+
- X+ register struct trap *trap;
- X+ {
- X+ if(!trap->tseen) {
- X+
- X+ trap->tseen = 1;
- X+ newsym(trap->tx, trap->ty);
- X+ }
- X+ }
- X+
- X+ #endif /* OVLB */
- X+ #ifdef OVL1
- X+
- X int
- X mintrap(mtmp)
- X register struct monst *mtmp;
- X***************
- X*** 651,660 ****
- X if(mtmp->data->msize > MZ_SMALL &&
- X !amorphous(mtmp->data)) {
- X mtmp->mtrapped = 1;
- X! if(in_sight)
- X pline("%s is caught in a bear trap!",
- X Monnam(mtmp));
- X! else
- X if((mtmp->data == &mons[PM_OWLBEAR]
- X || mtmp->data == &mons[PM_BUGBEAR])
- X && flags.soundok)
- X--- 724,734 ----
- X if(mtmp->data->msize > MZ_SMALL &&
- X !amorphous(mtmp->data)) {
- X mtmp->mtrapped = 1;
- X! if(in_sight) {
- X pline("%s is caught in a bear trap!",
- X Monnam(mtmp));
- X! seetrap(trap);
- X! } else
- X if((mtmp->data == &mons[PM_OWLBEAR]
- X || mtmp->data == &mons[PM_BUGBEAR])
- X && flags.soundok)
- X***************
- X*** 663,681 ****
- X break;
- X #ifdef POLYSELF
- X case POLY_TRAP:
- X! if(!resist(mtmp, WAND_SYM, 0, NOTELL))
- X (void) newcham(mtmp, (struct permonst *)0);
- X break;
- X #endif
- X case RUST_TRAP:
- X if(in_sight)
- X! pline("A gush of water hits %s!", mon_nam(mtmp));
- X #ifdef GOLEMS
- X if (mtmp->data == &mons[PM_IRON_GOLEM]) {
- X! if (in_sight) pline("%s falls to pieces!",
- X! Monnam(mtmp));
- X else if(mtmp->mtame)
- X! pline("May %s rust in peace.",
- X mon_nam(mtmp));
- X mondied(mtmp);
- X trapkilled = TRUE;
- X--- 737,759 ----
- X break;
- X #ifdef POLYSELF
- X case POLY_TRAP:
- X! if(!resist(mtmp, WAND_SYM, 0, NOTELL)) {
- X (void) newcham(mtmp, (struct permonst *)0);
- X+ seetrap(trap);
- X+ }
- X break;
- X #endif
- X case RUST_TRAP:
- X if(in_sight)
- X! pline("A gush of water hits %s!", mon_nam(mtmp));
- X! if(cansee(mtmp->mx,mtmp->my))
- X! seetrap(trap);
- X #ifdef GOLEMS
- X if (mtmp->data == &mons[PM_IRON_GOLEM]) {
- X! if (in_sight)
- X! pline("%s falls to pieces!", Monnam(mtmp));
- X else if(mtmp->mtame)
- X! pline("May %s rust in peace.",
- X mon_nam(mtmp));
- X mondied(mtmp);
- X trapkilled = TRUE;
- X***************
- X*** 693,717 ****
- X break;
- X case PIT:
- X case SPIKED_PIT:
- X! /* there should be a mtmp/data -> floating */
- X! if(!is_flyer(mtmp->data) /* ab */
- X! && mtmp->data != &mons[PM_WUMPUS] /* 3. */) {
- X if (!passes_walls(mtmp->data))
- X! mtmp->mtrapped = 1;
- X! if(in_sight)
- X! pline("%s falls into a pit!", Monnam(mtmp));
- X if(thitm(0, mtmp, (struct obj *)0,
- X! rnd((tt==PIT) ? 6 : 10)))
- X! trapkilled = TRUE;
- X }
- X break;
- X case SLP_GAS_TRAP:
- X if(!resists_sleep(mtmp->data) &&
- X! !mtmp->msleep && !mtmp->mfroz) {
- X! mtmp->msleep = 1;
- X if(in_sight)
- X pline("%s suddenly falls asleep!",
- X Monnam(mtmp));
- X }
- X break;
- X case TELEP_TRAP:
- X--- 771,800 ----
- X break;
- X case PIT:
- X case SPIKED_PIT:
- X! /* TO DO: there should be a mtmp/data -> floating */
- X! if(!is_flyer(mtmp->data) &&
- X! mtmp->data != &mons[PM_WUMPUS]) {
- X if (!passes_walls(mtmp->data))
- X! mtmp->mtrapped = 1;
- X! if(in_sight) {
- X! pline("%s falls into a pit!", Monnam(mtmp));
- X! seetrap(trap);
- X! }
- X if(thitm(0, mtmp, (struct obj *)0,
- X! rnd((tt==PIT) ? 6 : 10)))
- X! trapkilled = TRUE;
- X }
- X break;
- X case SLP_GAS_TRAP:
- X if(!resists_sleep(mtmp->data) &&
- X! !mtmp->msleep && mtmp->mcanmove) {
- X! mtmp->mcanmove = 0;
- X! mtmp->mfrozen = rnd(25);
- X if(in_sight)
- X pline("%s suddenly falls asleep!",
- X Monnam(mtmp));
- X+ if(cansee(mtmp->mx,mtmp->my))
- X+ seetrap(trap);
- X }
- X break;
- X case TELEP_TRAP:
- X***************
- X*** 724,732 ****
- X */
- X if (trap->once) vloc(mtmp);
- X else rloc(mtmp);
- X! if(in_sight && !cansee(mtmp->mx,mtmp->my))
- X pline("%s suddenly disappears!",
- X Monnam(mtmp));
- X #ifdef WALKIES
- X }
- X #endif
- X--- 807,817 ----
- X */
- X if (trap->once) vloc(mtmp);
- X else rloc(mtmp);
- X! if(in_sight && !cansee(mtmp->mx,mtmp->my)) {
- X pline("%s suddenly disappears!",
- X Monnam(mtmp));
- X+ seetrap(trap);
- X+ }
- X #ifdef WALKIES
- X }
- X #endif
- X***************
- X*** 735,740 ****
- X--- 820,826 ----
- X otmp = mksobj(ARROW, FALSE);
- X otmp->quan = 1;
- X otmp->owt = weight(otmp);
- X+ if(in_sight) seetrap(trap);
- X if(thitm(8, mtmp, otmp, 0)) trapkilled = TRUE;
- X break;
- X case DART_TRAP:
- X***************
- X*** 742,747 ****
- X--- 828,834 ----
- X otmp->quan = 1;
- X if (!rn2(6)) otmp->opoisoned = 1;
- X otmp->owt = weight(otmp);
- X+ if(in_sight) seetrap(trap);
- X if(thitm(7, mtmp, otmp, 0)) trapkilled = TRUE;
- X break;
- X case TRAPDOOR:
- X***************
- X*** 753,762 ****
- X--- 840,851 ----
- X otmp = mksobj(ROCK, FALSE);
- X otmp->quan = 1;
- X otmp->owt = weight(otmp);
- X+ if(in_sight) seetrap(trap);
- X if(thitm(0, mtmp, otmp, d(2, 10)))
- X trapkilled = TRUE;
- X break;
- X }
- X+ if (mtmp->data == &mons[PM_WUMPUS]) break;
- X tdoor = TRUE;
- X /* Fall through */
- X case LEVEL_TELEP:
- X***************
- X*** 765,771 ****
- X && !mtmp->wormno
- X /* long worms with tails mustn't change levels */
- X #endif
- X! ){
- X #ifdef WALKIES
- X if(teleport_pet(mtmp)) {
- X #endif
- X--- 854,860 ----
- X && !mtmp->wormno
- X /* long worms with tails mustn't change levels */
- X #endif
- X! ) {
- X #ifdef WALKIES
- X if(teleport_pet(mtmp)) {
- X #endif
- X***************
- X*** 786,793 ****
- X }
- X fall_down(mtmp, newlev);
- X }
- X! if(in_sight)
- X pline("Suddenly, %s disappears out of sight.", mon_nam(mtmp));
- X return(2); /* no longer on this level */
- X #ifdef WALKIES
- X }
- X--- 875,884 ----
- X }
- X fall_down(mtmp, newlev);
- X }
- X! if(in_sight) {
- X pline("Suddenly, %s disappears out of sight.", mon_nam(mtmp));
- X+ seetrap(trap);
- X+ }
- X return(2); /* no longer on this level */
- X #ifdef WALKIES
- X }
- X***************
- X*** 804,834 ****
- X register struct monst *ztmp = fmon;
- X
- X if(is_flyer(mtmp->data)) break;
- X! /* Stepped on a squeaky board. */
- X! if (in_sight)
- X! pline("%s steps on a squeaky board.", Monnam(mtmp));
- X! else
- X You("hear a distant squeak.");
- X! /* Wake up nearby monsters. */
- X! while(ztmp) {
- X! if(dist2(mtmp->mx,mtmp->my,ztmp->mx,ztmp->my) < 40)
- X! if(ztmp->msleep) ztmp->msleep = 0;
- X! ztmp = ztmp->nmon;
- X! }
- X break;
- X }
- X case WEB:
- X! /* Monster in a web. */
- X! /* in_sight check and confused bear by Eric Backus */
- X! if(mtmp->data->mlet != S_SPIDER) {
- X! if(in_sight)
- X! pline("%s is caught in a web!", Monnam(mtmp));
- X! else
- X! if(mtmp->data == &mons[PM_OWLBEAR])
- X! You("hear the roaring of a confused bear!");
- X! mtmp->mtrapped = 1;
- X! }
- X! break;
- X #ifdef SPELLS
- X case ANTI_MAGIC: break;
- X #endif
- X--- 895,926 ----
- X register struct monst *ztmp = fmon;
- X
- X if(is_flyer(mtmp->data)) break;
- X! /* stepped on a squeaky board */
- X! if (in_sight) {
- X! pline("A board beneath %s squeaks loudly.", mon_nam(mtmp));
- X! seetrap(trap);
- X! } else
- X You("hear a distant squeak.");
- X! /* wake up nearby monsters */
- X! while(ztmp) {
- X! if(dist2(mtmp->mx,mtmp->my,ztmp->mx,ztmp->my) < 40)
- X! if(ztmp->msleep) ztmp->msleep = 0;
- X! ztmp = ztmp->nmon;
- X! }
- X break;
- X }
- X case WEB:
- X! /* Monster in a web. */
- X! if(mtmp->data->mlet != S_SPIDER) {
- X! if(in_sight)
- X! pline("%s is caught in a web.", Monnam(mtmp));
- X! else /* Eric Backus */
- X! if(mtmp->data == &mons[PM_OWLBEAR] ||
- X! mtmp->data == &mons[PM_BUGBEAR])
- X! You("hear the roaring of a confused bear!");
- X! mtmp->mtrapped = 1;
- X! }
- X! break;
- X #ifdef SPELLS
- X case ANTI_MAGIC: break;
- X #endif
- X***************
- X*** 838,845 ****
- X if(rn2(3))
- X break; /* monsters usually don't set it off */
- X if(in_sight)
- X! pline("KAABLAMM!!! %s steps on a land mine!",
- X! Monnam(mtmp));
- X else if (flags.soundok)
- X pline("Kaablamm! You hear an explosion in the distance!");
- X deltrap(t_at(mtmp->mx, mtmp->my));
- X--- 930,937 ----
- X if(rn2(3))
- X break; /* monsters usually don't set it off */
- X if(in_sight)
- X! pline("KAABLAMM!!! %s triggers a land mine!",
- X! Monnam(mtmp));
- X else if (flags.soundok)
- X pline("Kaablamm! You hear an explosion in the distance!");
- X deltrap(t_at(mtmp->mx, mtmp->my));
- X***************
- X*** 854,860 ****
- X break;
- X }
- X default:
- X! impossible("Some monster encountered a strange trap of type %d.",tt);
- X }
- X }
- X if(trapkilled) return 2;
- X--- 946,952 ----
- X break;
- X }
- X default:
- X! impossible("Some monster encountered a strange trap of type %d.", tt);
- X }
- X }
- X if(trapkilled) return 2;
- X***************
- X*** 861,869 ****
- X else return mtmp->mtrapped;
- X }
- X
- X void
- X selftouch(arg)
- X! char *arg;
- X {
- X if(uwep && (uwep->otyp == CORPSE && uwep->corpsenm == PM_COCKATRICE)
- X #ifdef POLYSELF
- X--- 953,964 ----
- X else return mtmp->mtrapped;
- X }
- X
- X+ #endif /* OVL1 */
- X+ #ifdef OVLB
- X+
- X void
- X selftouch(arg)
- X! const char *arg;
- X {
- X if(uwep && (uwep->otyp == CORPSE && uwep->corpsenm == PM_COCKATRICE)
- X #ifdef POLYSELF
- X***************
- X*** 872,878 ****
- X ){
- X pline("%s touch the cockatrice corpse.", arg);
- X You("turn to stone...");
- X! killer = "cockatrice corpse accident";
- X done(STONING);
- X }
- X }
- X--- 967,974 ----
- X ){
- X pline("%s touch the cockatrice corpse.", arg);
- X You("turn to stone...");
- X! killer_format = KILLED_BY;
- X! killer = "touching a cockatrice corpse";
- X done(STONING);
- X }
- X }
- X***************
- X*** 988,993 ****
- X--- 1084,1091 ----
- X unsee();
- X u.utrap = 0;
- X u.ustuck = 0;
- X+ u.ux0 = u.ux;
- X+ u.uy0 = u.uy;
- X u.ux = nux;
- X u.uy = nuy;
- X #ifdef POLYSELF
- X***************
- X*** 1013,1019 ****
- X--- 1111,1121 ----
- X struct trap *trap;
- X #ifdef SPELLS
- X boolean castit = FALSE;
- X+ # ifdef __GNULINT__
- X+ register int sp_no = 0;
- X+ # else
- X register int sp_no;
- X+ # endif
- X #endif
- X
- X trap = t_at(u.ux, u.uy);
- X***************
- X*** 1034,1040 ****
- X if (trap)
- X #ifdef POLYSELF
- X You("%s onto the teleportation trap.",
- X! nolimbs(uasmon) ? "slither" : "jump");
- X #else
- X You("jump onto the teleportation trap.");
- X #endif
- X--- 1136,1142 ----
- X if (trap)
- X #ifdef POLYSELF
- X You("%s onto the teleportation trap.",
- X! locomotion(uasmon, "jump"));
- X #else
- X You("jump onto the teleportation trap.");
- X #endif
- X***************
- X*** 1188,1195 ****
- X #endif
- X if(newlevel <= -10) {
- X You("arrive in heaven.");
- X! pline("\"You are here a bit early, but we'll let you in.\"");
- X! killer = "visit to heaven";
- X done(DIED);
- X } else if (newlevel == -9) {
- X You("feel deliriously happy. ");
- X--- 1290,1298 ----
- X #endif
- X if(newlevel <= -10) {
- X You("arrive in heaven.");
- X! verbalize("Thou art early, but we'll admit thee.");
- X! killer_format = NO_KILLER_PREFIX;
- X! killer = "went to heaven prematurely";
- X done(DIED);
- X } else if (newlevel == -9) {
- X You("feel deliriously happy. ");
- X***************
- X*** 1219,1225 ****
- X pline("Unfortunately, you don't know how to fly.");
- X You("plummet a few thousand feet to your death.");
- X dlevel = 0;
- X! killer = "long fall";
- X done(DIED);
- X #ifdef WIZARD
- X return;
- X--- 1322,1330 ----
- X pline("Unfortunately, you don't know how to fly.");
- X You("plummet a few thousand feet to your death.");
- X dlevel = 0;
- X! killer_format = NO_KILLER_PREFIX;
- X! killer =
- X! self_pronoun("teleported out of the dungeon and fell to %s death","his");
- X done(DIED);
- X #ifdef WIZARD
- X return;
- X***************
- X*** 1284,1303 ****
- X } else {
- X num = rnd(6);
- X u.uhpmax -= num;
- X! losehp(num,"burst of flame");
- X break;
- X }
- X }
- X
- X /* odd feelings */
- X! case 13: pline("A shiver runs up and down your spine!");
- X! /* TO DO: What if you're polymorphed into something spineless? */
- X break;
- X case 14: You(Hallucination ?
- X "hear the moon howling at you." :
- X "hear distant howling.");
- X break;
- X! case 15: You("suddenly yearn for your distant homeland.");
- X break;
- X case 16: Your("pack shakes violently!");
- X break;
- X--- 1389,1410 ----
- X } else {
- X num = rnd(6);
- X u.uhpmax -= num;
- X! losehp(num,"burst of flame", KILLED_BY_AN);
- X break;
- X }
- X }
- X
- X /* odd feelings */
- X! case 13: pline("A shiver runs up and down your %s!",
- X! body_part(SPINE));
- X break;
- X case 14: You(Hallucination ?
- X "hear the moon howling at you." :
- X "hear distant howling.");
- X break;
- X! case 15: You("suddenly yearn for %s.",
- X! Hallucination ? "Cleveland" :
- X! "your distant homeland");
- X break;
- X case 16: Your("pack shakes violently!");
- X break;
- X***************
- X*** 1344,1356 ****
- X
- X /* Scrolls and potions get affected by the water */
- X for(obj = invent; obj; obj = obj->nobj) {
- X! if(obj->olet == SCROLL_SYM && rn2(12) > u.uluck
- X #ifdef MAIL
- X && obj->otyp != SCR_MAIL
- X #endif
- X )
- X obj->otyp = SCR_BLANK_PAPER;
- X! if(obj->olet == POTION_SYM && rn2(12) > u.uluck) {
- X if (obj->spe == -1) {
- X obj->otyp = POT_WATER;
- X obj->blessed = obj->cursed = 0;
- X--- 1451,1463 ----
- X
- X /* Scrolls and potions get affected by the water */
- X for(obj = invent; obj; obj = obj->nobj) {
- X! if(obj->olet == SCROLL_SYM && rn2(12) > Luck
- X #ifdef MAIL
- X && obj->otyp != SCR_MAIL
- X #endif
- X )
- X obj->otyp = SCR_BLANK_PAPER;
- X! if(obj->olet == POTION_SYM && rn2(12) > Luck) {
- X if (obj->spe == -1) {
- X obj->otyp = POT_WATER;
- X obj->blessed = obj->cursed = 0;
- X***************
- X*** 1378,1389 ****
- X #ifdef WIZARD
- X wizard ||
- X #endif
- X! rn2(3) < u.uluck+2) {
- X You("attempt a teleport spell."); /* utcsri!carroll */
- X (void) dotele();
- X if(!is_pool(u.ux,u.uy)) return;
- X }
- X You("drown.");
- X killer = levl[u.ux][u.uy].typ == POOL ? "pool of water" : "moat";
- X done(DROWNING);
- X }
- X--- 1485,1497 ----
- X #ifdef WIZARD
- X wizard ||
- X #endif
- X! rn2(3) < Luck+2) {
- X You("attempt a teleport spell."); /* utcsri!carroll */
- X (void) dotele();
- X if(!is_pool(u.ux,u.uy)) return;
- X }
- X You("drown.");
- X+ killer_format = KILLED_BY_AN;
- X killer = levl[u.ux][u.uy].typ == POOL ? "pool of water" : "moat";
- X done(DROWNING);
- X }
- X***************
- X*** 1519,1528 ****
- X register struct obj *otmp,*otmp2;
- X char buf[80];
- X
- X! if(rn2(13+u.uluck) > 7) return;
- X
- X otmp = obj;
- X! switch(rn2(13-u.uluck)) { /* which trap? */
- X case 23:
- X case 22:
- X case 21:
- X--- 1627,1638 ----
- X register struct obj *otmp,*otmp2;
- X char buf[80];
- X
- X! if(Luck > -13 && rn2(13+Luck) > 7) return;
- X
- X otmp = obj;
- X! switch(rn2(20) ? ((Luck >= 13) ? 0 : rn2(13-Luck)) : rn2(26)) {
- X! case 25:
- X! case 24:
- X case 23:
- X case 22:
- X case 21:
- X***************
- X*** 1536,1542 ****
- X delobj(otmp);
- X }
- X
- X! losehp(d(6,6), buf);
- X wake_nearby();
- X return;
- X case 20:
- X--- 1646,1652 ----
- X delobj(otmp);
- X }
- X
- X! losehp(d(6,6), buf, KILLED_BY_AN);
- X wake_nearby();
- X return;
- X case 20:
- X***************
- X*** 1545,1562 ****
- X case 17:
- X pline("A cloud of noxious gas billows from the %s.",
- X xname(obj));
- X! poisoned("gas cloud", A_STR, "cloud of poison gas");
- X break;
- X case 16:
- X case 15:
- X case 14:
- X case 13:
- X pline("A tower of flame erupts from the %s",
- X xname(obj));
- X if(Fire_resistance) {
- X shieldeff(u.ux, u.uy);
- X You("don't seem to be affected.");
- X! } else losehp(d(4, 6), "tower of flame");
- X destroy_item(SCROLL_SYM, AD_FIRE);
- X #ifdef SPELLS
- X destroy_item(SPBOOK_SYM, AD_FIRE);
- X--- 1655,1679 ----
- X case 17:
- X pline("A cloud of noxious gas billows from the %s.",
- X xname(obj));
- X! poisoned("gas cloud", A_STR, "cloud of poison gas",15);
- X break;
- X case 16:
- X case 15:
- X case 14:
- X case 13:
- X+ You("feel a needle prick your %s.",body_part(bodypart));
- X+ poisoned("needle", A_CON, "poison needle",10);
- X+ break;
- X+ case 12:
- X+ case 11:
- X+ case 10:
- X+ case 9:
- X pline("A tower of flame erupts from the %s",
- X xname(obj));
- X if(Fire_resistance) {
- X shieldeff(u.ux, u.uy);
- X You("don't seem to be affected.");
- X! } else losehp(d(4, 6), "tower of flame", KILLED_BY_AN);
- X destroy_item(SCROLL_SYM, AD_FIRE);
- X #ifdef SPELLS
- X destroy_item(SPBOOK_SYM, AD_FIRE);
- X***************
- X*** 1563,1589 ****
- X #endif
- X destroy_item(POTION_SYM, AD_FIRE);
- X break;
- X! case 12:
- X! case 10:
- X! case 9:
- X You("are jolted by a surge of electricity!");
- X if(Shock_resistance) {
- X shieldeff(u.ux, u.uy);
- X You("don't seem to be affected.");
- X! } else losehp(d(4, 4), "electric shock");
- X destroy_item(RING_SYM, AD_ELEC);
- X destroy_item(WAND_SYM, AD_ELEC);
- X break;
- X! case 8:
- X! case 7:
- X! case 6:
- X pline("Suddenly you are frozen in place!");
- X nomovemsg = "You can move again.";
- X multi = -d(5, 6);
- X break;
- X! case 5:
- X! case 4:
- X! case 3:
- X pline("A cloud of %s gas billows from the %s",
- X hcolor(), xname(obj));
- X if(!Stunned)
- X--- 1680,1706 ----
- X #endif
- X destroy_item(POTION_SYM, AD_FIRE);
- X break;
- X! case 8:
- X! case 7:
- X! case 6:
- X You("are jolted by a surge of electricity!");
- X if(Shock_resistance) {
- X shieldeff(u.ux, u.uy);
- X You("don't seem to be affected.");
- X! } else losehp(d(4, 4), "electric shock", KILLED_BY_AN);
- X destroy_item(RING_SYM, AD_ELEC);
- X destroy_item(WAND_SYM, AD_ELEC);
- X break;
- X! case 5:
- X! case 4:
- X! case 3:
- X pline("Suddenly you are frozen in place!");
- X nomovemsg = "You can move again.";
- X multi = -d(5, 6);
- X break;
- X! case 2:
- X! case 1:
- X! case 0:
- X pline("A cloud of %s gas billows from the %s",
- X hcolor(), xname(obj));
- X if(!Stunned)
- X***************
- X*** 1594,1607 ****
- X make_stunned(HStun + rn1(7, 16),FALSE);
- X make_hallucinated(Hallucination + rn1(5, 16),FALSE);
- X break;
- X! default:
- X! You("feel a needle prick your %s.",body_part(bodypart));
- X! poisoned("needle", A_CON, "a poisoned needle");
- X break;
- X }
- X otmp->otrapped = 0; /* these traps are one-shot things */
- X }
- X
- X void
- X wake_nearby() { /* Wake up nearby monsters. */
- X register struct monst *mtmp;
- X--- 1711,1726 ----
- X make_stunned(HStun + rn1(7, 16),FALSE);
- X make_hallucinated(Hallucination + rn1(5, 16),FALSE);
- X break;
- X! default: impossible("bad chest trap");
- X break;
- X }
- X+ bot(); /* to get immediate botl re-display */
- X otmp->otrapped = 0; /* these traps are one-shot things */
- X }
- X
- X+ #endif /* OVLB */
- X+ #ifdef OVL2
- X+
- X void
- X wake_nearby() { /* Wake up nearby monsters. */
- X register struct monst *mtmp;
- X***************
- X*** 1614,1619 ****
- X--- 1733,1741 ----
- X }
- X }
- X
- X+ #endif /* OVL2 */
- X+ #ifdef OVL0
- X+
- X struct trap *
- X t_at(x,y)
- X register int x, y;
- X***************
- X*** 1626,1631 ****
- X--- 1748,1756 ----
- X return((struct trap *)0);
- X }
- X
- X+ #endif /* OVL0 */
- X+ #ifdef OVLB
- X+
- X void
- X deltrap(trap)
- X register struct trap *trap;
- X***************
- X*** 1643,1662 ****
- X
- X void
- X b_trapped(item) /* used for doors. can be used */
- X! register char *item; /* for anything else that opens */
- X {
- X register int dmg = rnd(5+(dlevel < 5 ? dlevel : 2+dlevel/2));
- X
- X pline("KABOOM!! The %s was booby-trapped!", item);
- X! if(u.ulevel < 4 && dlevel < 3 && !rn2(3))
- X You("are shaken, but luckily unhurt.");
- X! else losehp(dmg, "explosion");
- X make_stunned(HStun + dmg, TRUE);
- X }
- X
- X /* Monster is hit by trap. */
- X /* Note: doesn't work if both obj and d_override are null */
- X! static boolean
- X thitm(tlev, mon, obj, d_override)
- X register int tlev;
- X register struct monst *mon;
- X--- 1768,1787 ----
- X
- X void
- X b_trapped(item) /* used for doors. can be used */
- X! register const char *item; /* for anything else that opens */
- X {
- X register int dmg = rnd(5+(dlevel < 5 ? dlevel : 2+dlevel/2));
- X
- X pline("KABOOM!! The %s was booby-trapped!", item);
- X! if(u.ulevel < 4 && dlevel < 3 && !rnl(3))
- X You("are shaken, but luckily unhurt.");
- X! else losehp(dmg, "explosion", KILLED_BY_AN);
- X make_stunned(HStun + dmg, TRUE);
- X }
- X
- X /* Monster is hit by trap. */
- X /* Note: doesn't work if both obj and d_override are null */
- X! XSTATIC boolean
- X thitm(tlev, mon, obj, d_override)
- X register int tlev;
- X register struct monst *mon;
- X***************
- X*** 1719,1721 ****
- X--- 1844,1848 ----
- X !strncmp(nomovemsg,"You regain con", 15) ||
- X !strncmp(nomovemsg,"You are consci", 15)));
- X }
- X+
- X+ #endif /* OVLB */
- X*** others/Old/pcunix.c Mon Feb 19 23:35:44 1990
- X--- others/pcunix.c Mon Feb 5 18:45:43 1990
- X***************
- X*** 1,4 ****
- X! /* SCCS Id: @(#)pcunix.c 3.0 88/07/21
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X--- 1,4 ----
- X! /* SCCS Id: @(#)pcunix.c 3.0 89/12/29
- X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X /* NetHack may be freely redistributed. See license for details. */
- X
- X***************
- X*** 14,26 ****
- X */
- X
- X #include "hack.h" /* mainly for index() which depends on BSD */
- X- #ifdef TOS
- X- #ifndef OLD_TOS
- X- #include <errno.h>
- X- #else
- X- #include <error.h>
- X- #endif /* OLD_TOS */
- X- #endif
- X
- X #ifndef MACOS
- X #include <sys/types.h>
- X--- 14,19 ----
- X***************
- X*** 27,36 ****
- X #include <sys/stat.h>
- X #endif
- X
- X! #ifndef OLD_TOS
- X! # ifndef MACOS
- X! static struct stat buf, hbuf;
- X # endif
- X
- X void
- X setrandom()
- X--- 20,33 ----
- X #include <sys/stat.h>
- X #endif
- X
- X! #ifdef OVLB
- X!
- X! #ifndef MACOS
- X! static struct stat buf;
- X! # ifdef WANT_GETHDATE
- X! static struct stat hbuf;
- X # endif
- X+ #endif
- X
- X void
- X setrandom()
- X***************
- X*** 96,107 ****
- X return(getlt()->tm_hour == 0);
- X }
- X
- X! # ifndef MACOS
- X void
- X gethdate(name)
- X char *name;
- X {
- X! # if defined(TOS) && !defined(__GNUC__)
- X /* old version - for people short of space */
- X /*
- X /* register char *np;
- X--- 93,104 ----
- X return(getlt()->tm_hour == 0);
- X }
- X
- X! #ifndef MACOS
- X void
- X gethdate(name)
- X char *name;
- X {
- X! # ifdef WANT_GETHDATE
- X /* old version - for people short of space */
- X /*
- X /* register char *np;
- X***************
- X*** 141,152 ****
- X path = np + 1;
- X }
- X error("Cannot get status of %s.", (np = rindex(name, '/')) ? np+1 : name);
- X! # endif /* TOS && __GNUC__ */
- X }
- X
- X int
- X! uptodate(fd) {
- X! # if defined(TOS) && !defined(__GNUC__) /* no fstat yet */
- X if(fstat(fd, &buf)) {
- X pline("Cannot get status of saved level? ");
- X return(0);
- X--- 138,151 ----
- X path = np + 1;
- X }
- X error("Cannot get status of %s.", (np = rindex(name, '/')) ? np+1 : name);
- X! # endif /* WANT_GETHDATE */
- X }
- X
- X int
- X! uptodate(fd)
- X! int fd;
- X! {
- X! # ifdef WANT_GETHDATE
- X if(fstat(fd, &buf)) {
- X pline("Cannot get status of saved level? ");
- X return(0);
- X***************
- X*** 155,177 ****
- X pline("Saved level is out of date. ");
- X return(0);
- X }
- X! # endif
- X return(1);
- X }
- X! # endif /* MACOS /* */
- X! #endif /* OLD_TOS /* */
- X
- X void
- X regularize(s)
- X! /* normalize file name - we don't like .'s, /'s, :'s [Mac], or spaces */
- X register char *s;
- X {
- X register char *lp;
- X
- X while((lp=index(s, '.')) || (lp=index(s, '/')) || (lp=index(s,' '))
- X! #ifdef MACOS
- X! || (lp=index(s, ':'))
- X #endif
- X- )
- X- *lp = '_';
- X }
- X--- 154,203 ----
- X pline("Saved level is out of date. ");
- X return(0);
- X }
- X! # else
- X! # if defined(MSDOS) && !defined(NO_FSTAT)
- X! if(fstat(fd, &buf)) {
- X! if(moves > 1) pline("Cannot get status of saved level? ");
- X! else pline("Cannot get status of saved game");
- X! return(0);
- X! }
- X! if(comp_times(buf.st_mtime)) {
- X! if(moves > 1) pline("Saved level is out of date");
- X! else pline("Saved game is out of date. ");
- X! return(0);
- X! }
- X! # endif /* MSDOS /* */
- X! # endif /* WANT_GETHDATE */
- X return(1);
- X }
- X! #endif /* MACOS /* */
- X
- X void
- X regularize(s)
- X! /*
- X! * normalize file name - we don't like .'s, /'s, :'s [Mac], or spaces,
- X! * and in msdos / OS/2 we really get picky
- X! */
- X register char *s;
- X {
- X register char *lp;
- X
- X+ #ifdef MSDOS
- X+ for (lp = s; *lp; lp++)
- X+ if (*lp <= ' ' || *lp == '"' || (*lp >= '*' && *lp <= ',') ||
- X+ *lp == '.' || *lp == '/' || (*lp >= ':' && *lp <= '?') ||
- X+ # ifdef OS2
- X+ *lp == '&' || *lp == '(' || *lp == ')' ||
- X+ # endif
- X+ *lp == '|' || *lp >= 127 || (*lp >= '[' && *lp <= ']'))
- X+ *lp = '_';
- X+ #else
- X while((lp=index(s, '.')) || (lp=index(s, '/')) || (lp=index(s,' '))
- X! # ifdef MACOS
- X! || (lp=index(s, ':'))
- X! # endif
- X! ) *lp = '_';
- X #endif
- X }
- X+
- X+ #endif /* OVLB */
- X*** others/Old/random.c Mon Feb 19 23:35:59 1990
- X--- others/random.c Fri Feb 16 23:01:50 1990
- X***************
- X*** 15,22 ****
- X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- X */
- X
- X! #if defined(LIBC_SCCS) && !defined(lint)
- X static char sccsid[] = "@(#)random.c 5.5 (Berkeley) 7/6/88";
- X #endif /* LIBC_SCCS and not lint */
- X
- X #include <stdio.h>
- X--- 15,34 ----
- X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- X */
- X
- X! /* Several minor changes were made for the NetHack distribution to satisfy
- X! * non-BSD compilers (by definition BSD compilers do not need to compile
- X! * this file for NetHack). These changes consisted of:
- X! * - changing the sccsid conditions to nested ifdefs from defined()s
- X! * to accommodate stupid preprocessors
- X! * - giving srandom() type void instead of allowing it to default to int
- X! * - making the first return in initstate() return a value consistent
- X! * with its type (instead of no value)
- X! */
- X!
- X! #ifdef LIBC_SCCS
- X! # ifndef lint
- X static char sccsid[] = "@(#)random.c 5.5 (Berkeley) 7/6/88";
- X+ # endif
- X #endif /* LIBC_SCCS and not lint */
- X
- X #include <stdio.h>
- X***************
- X*** 182,187 ****
- X--- 194,200 ----
- X * values produced by this routine.
- X */
- X
- X+ void
- X srandom( x )
- X
- X unsigned x;
- X***************
- X*** 236,242 ****
- X if( n < BREAK_1 ) {
- X if( n < BREAK_0 ) {
- X fprintf( stderr, "initstate: not enough state (%d bytes) with which to do jack; ignored.\n", n );
- X! return;
- X }
- X rand_type = TYPE_0;
- X rand_deg = DEG_0;
- X--- 249,255 ----
- X if( n < BREAK_1 ) {
- X if( n < BREAK_0 ) {
- X fprintf( stderr, "initstate: not enough state (%d bytes) with which to do jack; ignored.\n", n );
- X! return (char *)0;
- X }
- X rand_type = TYPE_0;
- X rand_deg = DEG_0;
- X*** others/Old/trampoli.c Mon Feb 19 23:37:13 1990
- X--- others/trampoli.c Wed Feb 7 18:39:42 1990
- X***************
- X*** 39,44 ****
- X--- 39,50 ----
- X #undef domonability
- X #endif /* POLYSELF */
- X
- X+ #ifdef EXPLORE_MODE
- X+ #undef enter_explore_mode
- X+
- X+ int enter_explore_mode() { return enter_explore_mode_(); }
- X+ #endif
- X+
- X #undef timed_occupation
- X
- X #if defined(WIZARD) || defined(EXPLORE_MODE)
- X***************
- X*** 131,137 ****
- X int Boots_off() { return Boots_off_(); }
- X int Gloves_off() { return Gloves_off_(); }
- X int Helmet_off() { return Helmet_off_(); }
- X! /* int Armor_on() { return Armor_on_(); } */
- X int Boots_on() { return Boots_on_(); }
- X int Gloves_on() { return Gloves_on_(); }
- X int Helmet_on() { return Helmet_on_(); }
- X--- 137,143 ----
- X int Boots_off() { return Boots_off_(); }
- X int Gloves_off() { return Gloves_off_(); }
- X int Helmet_off() { return Helmet_off_(); }
- X! int Armor_on() { return Armor_on_(); }
- X int Boots_on() { return Boots_on_(); }
- X int Gloves_on() { return Gloves_on_(); }
- X int Helmet_on() { return Helmet_on_(); }
- X***************
- X*** 173,180 ****
- X--- 179,188 ----
- X
- X
- X /* ### end.c ### */
- X+ #undef done1
- X #undef done2
- X
- X+ int done1() { return done1_(); }
- X int done2() { return done2_(); }
- X
- X
- X***************
- X*** 241,246 ****
- X--- 249,259 ----
- X int forcelock() { return forcelock_(); }
- X int picklock() { return picklock_(); }
- X
- X+ /* ### mondata.c ### */
- X+ #undef canseemon
- X+
- X+ boolean canseemon(x) struct monst *x; { return canseemon_(x); }
- X+
- X
- X /* ### o_init.c ### */
- X #undef dodiscovered
- X***************
- X*** 290,296 ****
- X #undef in_container
- X #undef out_container
- X
- X! int ck_bag() { return ck_bag_(); }
- X int ck_container(obj) struct obj *obj; { return ck_container_(obj); }
- X int doloot() { return doloot_(); }
- X int in_container(obj) struct obj *obj; { return in_container_(obj); }
- X--- 303,309 ----
- X #undef in_container
- X #undef out_container
- X
- X! int ck_bag(obj) struct obj *obj; { return ck_bag_(obj); }
- X int ck_container(obj) struct obj *obj; { return ck_container_(obj); }
- X int doloot() { return doloot_(); }
- X int in_container(obj) struct obj *obj; { return in_container_(obj); }
- X***************
- X*** 398,405 ****
- X--- 411,420 ----
- X
- X /* ### version.c ### */
- X #undef doversion
- X+ #undef doextversion
- X
- X int doversion() { return doversion_(); }
- X+ int doextversion() { return doextversion_(); }
- X
- X
- X /* ### wield.c ### */
- X
- END_OF_FILE
- if test 53640 -ne `wc -c <'patch7.21'`; then
- echo shar: \"'patch7.21'\" unpacked with wrong size!
- fi
- # end of 'patch7.21'
- echo shar: End of archive 16 \(of 30\).
- cp /dev/null ark16isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 30 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-